/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package runebound.combate;

import java.util.Scanner;
import java.util.StringTokenizer;



/**
 *
 * @author Miguel (alakat@gmail.com)
 */
public class InterfazUsuarioCombate {
    private static final InterfazUsuarioCombate instance  = new InterfazUsuarioCombate();

    public static InterfazUsuarioCombate getInstance() {
        return instance;
    }
    
    /**
     * Solicita un plan de acción por línea de comandos
     * @param calculadoraCombate 
     */
    public void solicitarPlanCombate(RBCalculadoraCombate calculadoraCombate){
        
        System.out.println("Describa el plan de combate  Distancia/Cuerpo/Magia con A o D si desea atacar o Defender (separado de un ' 'espacio). O escriba 'huir'\n RECUERDE SOLO UN ATAQUE 'A'");
        Scanner sc = new Scanner(System.in);
        
        String cadena = sc.nextLine();
        if(cadena.equalsIgnoreCase("huir")){
            PlanCombate plan = new PlanCombate(false, false, false, true);
            calculadoraCombate.setPlan(plan);
        }else{
            StringTokenizer st = new StringTokenizer(cadena, " ");
            if(st.countTokens()!=3){
                System.out.println("Error no '"+cadena+"' no es una linea correcta debe se como 'a d d' o 'D A D' o 'huir'");
                this.solicitarPlanCombate(calculadoraCombate);
            }else{
                PlanCombate plan = new PlanCombate(st.nextToken().equalsIgnoreCase("A"), 
                                                    st.nextToken().equalsIgnoreCase("A"), 
                                                    st.nextToken().equalsIgnoreCase("A"), false);
                if(!plan.validar()){
                    System.out.println("Error no '"+cadena+"' no es una linea correcta debe haber almenos una 'a' y solo una");
                    this.solicitarPlanCombate(calculadoraCombate);
                }else{
                    calculadoraCombate.setPlan(plan);
                }
                
            }
        }
        
    }
}
